package com.example.checkbox;

import android.annotation.SuppressLint;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {
    //创建对象
    private CheckBox CheckBox,CheckBox2,CheckBox3,CheckBox4;
    private EditText editText;
    private ImageButton imageButton;
    private TextView myTextView;
    private RadioGroup radioGroup;
    private Button button;
    private  String infor = "";
    /**
     * 定义布局对象
     * 注意<androidx.constraintlayout.widget.ConstraintLayout
     * .后面的是什么就写什么对象
     */
    private ConstraintLayout constraintLayout;
    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
        //获取对象ID
        CheckBox = findViewById(R.id.checkBox);
        CheckBox2 = findViewById(R.id.checkBox2);
        CheckBox3 = findViewById(R.id.checkBox3);
        CheckBox4 = findViewById(R.id.checkBox4);
        editText = findViewById(R.id.editTextText);
        imageButton = findViewById(R.id.imageButton);
        myTextView = findViewById(R.id.myTextView);
        radioGroup = findViewById(R.id.radiogroup);
        button = findViewById(R.id.button);
        constraintLayout = findViewById(R.id.main);
        //创建imageButton监听器
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //infor字符串追加 editText对象输入的字符串
                infor = infor + " " + editText.getText().toString();
                //把infor的变量赋值给myTextView对象
                myTextView.setText(infor);
                /**
                 * 可以设置color跟按钮的提示依赖库
                 * com.google.android.material
                 * 参数一:布局对象
                 * 参数二:提示内容
                 * 参数三:提示时间
                 */
                Snackbar.make(constraintLayout,"内容",Snackbar.LENGTH_LONG)
                        /**
                         * 参数一:按钮标题
                         * 参数二:按钮监视器
                         */
                        .setAction("确定", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Toast.makeText(MainActivity.this,
                                        "信息已确认",Toast.LENGTH_SHORT).show();
                            }
                        })
                        //文字颜色
                        .setTextColor(Color.CYAN)
                        //按钮标题颜色
                        .setActionTextColor(Color.RED)
                        //显示
                        .show();
            }
        });
        //创建复选框监听接口类
        class CheckBoxListener implements CompoundButton.OnCheckedChangeListener{
            /**
             * 当复合按钮的选中状态发生更改时调用。
             * @param buttonView 状态已更改的复合按钮视图。
             * @param isChecked  按钮View的新选中状态。true为选中false为未选中
             */
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(buttonView.getId()!=R.id.checkBox4){
                    if(isChecked){
                        infor = infor + " " + buttonView.getText().toString();
                        //去掉首位空
                        infor = infor.trim();
                    }else{
                        infor = infor.replace(buttonView.getText().toString(),"");
                        //去掉首位空
                        infor = infor.trim();
                    }
                }else{
                    if(isChecked){
                        //设置两个对象为可见
                        editText.setVisibility(View.VISIBLE);
                        imageButton.setVisibility(View.VISIBLE);
                    }else{
                        infor = infor.replace(editText.getText().toString(),"");
                        //去掉首位空
                        infor = infor.trim();
                        //设置两个对象为不可见
                        editText.setText("");
                        editText.setVisibility(View.INVISIBLE);
                        imageButton.setVisibility(View.INVISIBLE);
                    }
                }
                myTextView.setText(infor);
            }
        }
        //创建监听器对象
        CheckBoxListener checkBoxListener = new CheckBoxListener();
        //为复选框设置监听器对象
        CheckBox.setOnCheckedChangeListener(checkBoxListener);
        CheckBox2.setOnCheckedChangeListener(checkBoxListener);
        CheckBox3.setOnCheckedChangeListener(checkBoxListener);
        CheckBox4.setOnCheckedChangeListener(checkBoxListener);
        //设置单选框监听事件
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if(checkedId==R.id.radioButtontrue){
                    /**
                     * 发送INFO日志消息。
                     * tag 用于标识日志消息的来源。它通常标识发生日志调用的类或活动。
                     * msg 您想要记录的消息。
                     */
                    Log.i("MainActivity","点击true:" + checkedId);
                }else{
                    Log.i("MainActivity","点击false:" + checkedId);
                }
            }
        });
        /**
         * 设置按钮监听事件
         */
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取点击按钮的ID
                int rqid = radioGroup.getCheckedRadioButtonId();
                if(rqid==R.id.radioButtontrue){
                    /**
                     * 参数一:布局对象
                     * 参数二:提示内容
                     * 参数三:提示时间
                     */
                    Snackbar.make(constraintLayout,"内容为true",Snackbar.LENGTH_LONG)
                            /**
                             * 参数一:按钮标题
                             * 参数二:按钮监视器
                             */
                            .setAction("确定", new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    Toast.makeText(MainActivity.this,
                                            "信息已确认",Toast.LENGTH_SHORT).show();
                                }
                            })
                            //文字颜色
                            .setTextColor(Color.CYAN)
                            //按钮标题颜色
                            .setActionTextColor(Color.RED)
                            //显示
                            .show();
                }else{
                    /**
                     * 参数一:布局对象
                     * 参数二:提示内容
                     * 参数三:提示时间
                     */
                    Snackbar.make(constraintLayout,"内容为false",Snackbar.LENGTH_LONG)
                            /**
                             * 参数一:按钮标题
                             * 参数二:按钮监视器
                             */
                            .setAction("确定", new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    Toast.makeText(MainActivity.this,
                                            "信息已确认",Toast.LENGTH_SHORT).show();
                                }
                            })
                            //文字颜色
                            .setTextColor(Color.CYAN)
                            //按钮标题颜色
                            .setActionTextColor(Color.RED)
                            //显示
                            .show();
                }
            }
        });
    }
}